package org.jeecg.modules.zhima.portal.service;

import com.github.binarywang.wxpay.bean.notify.WxPayOrderNotifyResult;
import com.github.binarywang.wxpay.exception.WxPayException;
import org.jeecg.modules.zhima.admin.entity.ZmPayOrder;
import org.jeecg.modules.zhima.center.entity.OmsOrder;
import org.jeecg.modules.zhima.portal.domain.OrderPrepayReturn;

import javax.servlet.http.HttpServletRequest;
import java.io.IOException;
import java.math.BigDecimal;
import java.util.List;

public interface IPayService {

    OrderPrepayReturn prepay(Integer orderId);

    WxPayOrderNotifyResult payNotify(HttpServletRequest request) throws WxPayException, IOException;

    List<OmsOrder> checkAllPayStatus(Integer memberId);

    OmsOrder checkPayStatus(Integer orderId);

    void qrcodePay();

    /**
     * 请求退款服务
     * @param transactionID 是微信系统为每一笔支付交易分配的订单号，通过这个订单号可以标识这笔交易，它由支付订单API支付成功时返回的数据里面获取到。建议优先使用
     * @param outTradeNo 商户系统内部的订单号,transaction_id 、out_trade_no 二选一，如果同时存在优先级：transaction_id>out_trade_no
     * @param outRefundNo 商户系统内部的退款单号，商户系统内部唯一，同一退款单号多次请求只退一笔
     * @param totalFee 订单总金额，单位为分
     * @param refundFee 退款总金额，单位为分
     */
    void refund(String outTradeNo, String totalFee);

    OrderPrepayReturn createJoinOrder(BigDecimal payment, String gamePlayerId);
}
